home *** CD-ROM | disk | FTP | other *** search
/ com!online 2005 May / com_0505_1.iso / opensource / top10 / amc_install.exe / {app} / Scripts / FilmUP (IT).ifs < prev    next >
Encoding:
Text File  |  2004-05-18  |  9.8 KB  |  328 lines

  1. // GETINFO SCRIPTING
  2. // FilmUP (IT) import
  3.  
  4. (**************************************************
  5. *  Movie importation script for:                  *
  6. *      FilmUP (IT), http://www.filmup.com         *
  7. *                                                 *
  8. +  Original: L. Francisco                         *
  9. *  Modified: Pivello: query URL changed           *
  10. *  Modified: Zandal:  sistenato puntamento a      *
  11. *                     COMMENTS                    *
  12. *  Modified: Pivello: Film site URL selectable    *
  13. *                     instead of FilmUp page URL  *
  14. *                                                 *
  15. *                                                 *
  16. *  For use with Ant Movie Catalog 3.4.1           *
  17. *  www.ant.be.tf/moviecatalog                     *
  18. *                                                 *
  19. *  The source code of the script can be used in   *
  20. *  another program only if full credits to        *
  21. *  script author and a link to Ant Movie Catalog  *
  22. *  website are given in the About box or in       *
  23. *  the documentation of the program               *
  24. ***************************************************)
  25.  
  26. program FilmUP;
  27.  
  28. const
  29.   AltURL = False; // - Set to true if film web site needed for FieldURL (FilmUp
  30.                   //   page URL is already taken if film web site not found)
  31.                   // - Set to false for FilmUp page URL
  32. var
  33.   MovieName: string;
  34.   TheMovieAddress: string;
  35.  
  36. function FindLine(Pattern: string; List: TStringList; StartAt: Integer): Integer;
  37. var
  38.   i: Integer;
  39. begin
  40.   result := -1;
  41.   if StartAt < 0 then
  42.     StartAt := 0;
  43.   for i := StartAt to List.Count-1 do
  44.     if Pos(Pattern, List.GetString(i)) <> 0 then
  45.     begin
  46.       result := i;
  47.       Break;
  48.     end;
  49. end;
  50.  
  51. procedure AnalyzePage(Address: string);
  52. var
  53.   Page: TStringList;
  54.   LineNr: integer;
  55.   BeginPos: integer;
  56. begin
  57.   Page := TStringList.Create;
  58.   Page.Text := GetPage(Address);
  59.   LineNr := FindLine('<title>FilmUP - Cerca: ', Page, 0);
  60.   if LineNr = -1 then
  61.   begin
  62.     SetField(fieldURL, Address);
  63.     AnalyzeMoviePage(Page);
  64.   end
  65.   else
  66.   begin
  67.     PickTreeClear;
  68.     AddMoviesTitles(Page);
  69.     if TheMovieAddress='' then
  70.     begin
  71.       if PickTreeExec(Address) then AnalyzePage(Address);
  72.     end
  73.     else
  74.     begin
  75.       SetField(fieldURL, TheMovieAddress);
  76.       Page.Text := GetPage(TheMovieAddress);
  77.       AnalyzeMoviePage(Page);
  78.     end;
  79.   end;
  80.   Page.Free;
  81. end;
  82.  
  83. procedure AnalyzeMoviePage(Page: TStringList);
  84. var
  85.   Line: string;
  86.   NomeHtml: string;
  87.   LineNr,PrevLineNr: Integer;
  88.   BeginPos, EndPos: Integer;
  89.   Field: integer;
  90. begin
  91.   LineNr := FindLine('<font face="arial, helvetica" size="3"><b>', Page, 0);
  92.   if LineNr > -1 then
  93.   begin
  94.     //Translated Title
  95.     Line := Page.GetString(LineNr);
  96.     HTMLRemoveTags(Line);
  97.     SetField(fieldTranslatedTitle, Line);
  98.  
  99.     repeat
  100.       //Look for next info
  101.       repeat
  102.         LineNr := LineNr + 1;
  103.         Line := Page.GetString(LineNr);
  104.         HTMLRemoveTags(Line);
  105.       until Line<>'';
  106.  
  107.       //Look for type of line
  108.       if Line = 'Titolo originale: ' then
  109.         Field := fieldOriginalTitle
  110.       else if Line = 'Regia: ' then
  111.         Field := fieldDirector
  112.       else if Line = 'Produzione: ' then
  113.         Field := fieldProducer
  114.       else if Line = 'Nazione: ' then
  115.         Field := fieldCountry
  116.       else if Line = 'Genere: ' then
  117.         Field := fieldCategory
  118.       else if Line = 'Anno: ' then
  119.         Field := fieldYear
  120.       else if Line = 'Durata: ' then
  121.         Field := fieldLength //Special case: get number only
  122.       else if Line = 'Sito ufficiale: ' then
  123.         Field := fieldURL
  124.       else if Line = 'Cast: ' then
  125.         Field := fieldActors
  126.       else if Line = 'Trama:' then
  127.         Field := fieldDescription
  128.  
  129.  
  130.       else
  131.         Field := 0;
  132.  
  133.       // I have to add this test, for sometimes the description
  134.       // is on the same line as the tag 'Trama'
  135.       if (copy(Line,1,6)='Trama:') and (length(Line)>6) then
  136.        begin
  137.         Field := fieldDescription;
  138.         Delete(Line,1,6);
  139.         HTMLDecode(Line);
  140.        end
  141.       else
  142.        begin
  143.         //Get values
  144.         LineNr := LineNr + 1;
  145.         Line := Page.GetString(LineNr);
  146.         HTMLRemoveTags(Line);
  147.         HTMLDecode(Line);
  148.  
  149.         //Special case: Length
  150.         if Field = fieldLength then Line := copy(Line,1,length(Line)-1);
  151.        end;
  152.  
  153.        //Alternative URL case
  154.        if (field = fieldURL) and AltURL then
  155.        begin
  156.          if Length(Line) = 0 then      // if WEB url missing...
  157.            Line := GetField(fieldURL)  // ...restore FilmUp URL
  158.          else
  159.            Line := 'http://'+Line;
  160.        end;
  161.  
  162.       if Field<>0 then SetField(Field,Line);
  163.  
  164.     until Field=fieldDescription;
  165.   end;
  166.  
  167.   PrevLineNr := LineNr;
  168.  
  169.   //Comments
  170.   LineNr := FindLine('">Recensione</a>', Page, PrevLineNr);
  171.   if LineNr > -1 then
  172.   begin
  173.     Line := Page.GetString(LineNr);
  174.     if Pos('DVD', Line) <> 0 then Delete(Line,1,pos('DVD',Line));
  175.     if Pos('Scheda', Line) <> 0 then Delete(Line,1,pos('Scheda',Line));
  176.     Delete(Line,1,pos('<a href="',Line)+8);
  177.     NomeHtml :=Copy(Line,1,pos('"',Line)-1);
  178.     if (copy(NomeHtml,1,1)<>'/') then
  179.     begin
  180.       NomeHtml := '/' + NomeHtml;
  181.     end;
  182.     GetComments('http://www.filmup.com'+NomeHtml);
  183.     PrevLineNr := LineNr;
  184.   end;
  185.  
  186.   //Rating
  187.   LineNr := FindLine('">Opinioni</a>', Page, PrevLineNr);
  188.   if LineNr > -1 then
  189.   begin
  190.     Line := Page.GetString(LineNr);
  191.     Delete(Line,1,pos('Recensione',Line));
  192.     Delete(Line,1,pos('<a href="',Line)+8);
  193.  
  194.     Line := GetLineFromOtherPage(Copy(Line,1,pos('"',Line)-1),'</b> - <img src="/img/star/');
  195.     if Line <> '' then
  196.     begin
  197.       Line := Copy(Line,1,pos('</b> - <img src="/img/star/',Line)-1);
  198.       if pos('.',Line)>0 then Line := Copy(Line,1,pos('.',Line)-1);
  199.       SetField(fieldRating,Line);
  200.     end;
  201.     PrevLineNr := LineNr;
  202.   end;
  203.  
  204.   //Picture
  205.   LineNr := FindLine('<a href="posters/locp/', Page, PrevLineNr);
  206.   if LineNr = -1 then
  207.   begin
  208.     LineNr := FindLine('<img src="locand/', Page, PrevLineNr);
  209.     if LineNr > -1 then
  210.     begin
  211.       Line := Page.GetString(LineNr);
  212.       Delete(Line,1,pos('<img src="locand/', Line)+9);
  213.       GetPicture('http://www.filmup.com/'+Copy(Line,1,pos('"',Line)-1), False);
  214.     end;
  215.   end
  216.   else
  217.   begin
  218.     Line := Page.GetString(LineNr);
  219.     Delete(Line,1,pos('<a href="posters/locp/',Line)+8);
  220.     Line := GetLineFromOtherPage('http://www.filmup.com/'+Copy(Line,1,pos('"',Line)-1),'<img src="../loc/500/');
  221.     if Line <> '' then
  222.     begin
  223.       Delete(Line,1,pos('<img src="../',Line)+12);
  224.       GetPicture('http://www.filmup.com/posters/'+Copy(Line,1,pos('"',Line)-1), False);
  225.     end;
  226.   end;
  227.   DisplayResults;
  228. end;
  229.  
  230. function GetLineFromOtherPage(address: string; hint: string): string;
  231. var
  232.   Page: TStringList;
  233.   LineNr: integer;
  234. begin
  235.   Page := TStringList.Create;
  236.   Page.Text := GetPage(Address);
  237.   LineNr := FindLine(hint, Page, 0);
  238.   if LineNr > -1 then result := Page.GetString(LineNr);
  239.   Page.Free;
  240. end;
  241.  
  242. procedure GetComments(address: string);
  243. var
  244.   Page: TStringList;
  245.   BeginLine: integer;
  246.   EndLine: integer;
  247.   i: integer;
  248.   Line, Comments: string;
  249. begin
  250.   Page := TStringList.Create;
  251.   Page.Text := GetPage(Address);
  252.   BeginLine := FindLine('RECENSIONI', Page, 0);
  253.   BeginLine := FindLine('<font face="arial,helvetica" size="2"><b>', Page, BeginLine);
  254.   EndLine := FindLine('<a href="opinioni.htm">Scrivi la tua recensione!</a></font><br><br>', Page, BeginLine);
  255.   for i:= BeginLine+1 to EndLine-1 do
  256.   begin
  257.     Line := Page.GetString(i);
  258.     Line := StringReplace(Line, '<br>', #13#10);
  259.     Line := StringReplace(Line, #13#10#32, #13#10);
  260.     HTMLRemoveTags(Line);
  261.     HTMLDecode(Line);
  262.     Comments := Comments + Line;
  263.   end;
  264.   SetField(fieldComments, Comments);
  265.   Page.Free;
  266. end;
  267.  
  268. procedure AddMoviesTitles(Page: TStringList);
  269. var
  270.   LineNr: Integer;
  271.   Line: string;
  272.   MovieTitle, MovieAddress: string;
  273.   BeginPos, EndPos: Integer;
  274. begin
  275.   LineNr := 0;
  276.   LineNr := FindLine('FilmUP - Scheda:',Page,LineNr);
  277.   while LineNr > -1 do
  278.   begin
  279.     Line := Page.GetString(LineNr);
  280.     BeginPos := pos('<a href="',Line)+9;
  281.     EndPos := pos('" TARGET="_blank"><b>FilmUP - Scheda: ',Line);
  282.     MovieAddress := copy(Line,BeginPos,EndPos-BeginPos);
  283.     Delete(Line,1,EndPos);
  284.     BeginPos := pos('Scheda: ',Line)+8;
  285.     EndPos := pos('</a>',Line);
  286.     MovieTitle := copy(Line,BeginPos,EndPos-BeginPos);
  287.     HTMLRemoveTags(MovieTitle);
  288.     HTMLDecode(Movietitle);
  289.     LineNr := FindLine('FilmUP - Scheda:',Page,LineNr+1);
  290.     PickTreeAdd(MovieTitle, MovieAddress);
  291.  
  292.     if TheMovieAddress='*' then
  293.       TheMovieAddress := MovieAddress
  294.     else
  295.       TheMovieAddress := '';
  296.   end;
  297.   LineNr := FindLine('Successivo',Page,LineNr);
  298.   Line := Page.GetString(LineNr);
  299.   BeginPos := pos('HREF',Line);
  300.   if BeginPos>0 then
  301.   begin
  302.     Delete(Line,1,BeginPos + 5);
  303.     EndPos := pos('"',Line);
  304.     MovieAddress := copy(Line,1,EndPos-1);
  305.     PickTreeMoreLink('http://www.filmup.com'+MovieAddress);
  306.   end;
  307.   if TheMovieAddress='*' then TheMovieAddress := '';
  308. end;
  309.  
  310. // -----------------------------
  311. // Questo Φ il main dello script
  312. // -----------------------------
  313. begin
  314.   if CheckVersion(3,4,1) then
  315.    begin
  316.     TheMovieAddress := '*';
  317.     MovieName := GetField(fieldOriginalTitle);
  318.     if MovieName = '' then
  319.       MovieName := GetField(fieldTranslatedTitle);
  320.     if Input('FilmUP Import', 'Digita il titolo del film:', MovieName) then
  321.     begin
  322.       AnalyzePage('http://www.filmup.com/cgi-bin/search.cgi?q='+UrlEncode(MovieName)+'&ul=%25%2Fsc_%25');
  323.     end;
  324.    end
  325.   else
  326.     ShowMessage('Questo script richiede una versione pi∙ nuova di Ant Movie Catalog (almeno la versione 3.4.1)');
  327. end.
  328.